class Parenthesis {
public:
    char RightToLeft(char ch)  //右括号转为对应左括号
    {
        if(ch == ')') { return '('; }
        if(ch == '}') { return '{'; }
        if(ch == ']') { return '['; }
        return -1; 
    }
    
    bool chkParenthesis(string A, int n) {
       if(n & 1){   //字符串长度为奇数一定不合法
            return false; 
        }
        stack<char> str;
        for(int i = 0; i < n; ++i){
            if(A[i] == '(' || A[i] == '{' || A[i] == '[') { // 如果是左括号——入栈
                str.push(A[i]);
                continue;
            }
            else{
                if(str.empty() || str.top() != RightToLeft(A[i])){
                    return false;
                }
                str.pop();  // 如果左右匹配，出栈
            }
        }
        return str.empty();  //不为空返回 true
    }
};


